home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks ’87 / Source ƒ.sit / Source ƒ / C ƒ / CITADEL BBS 'C' SRC / CALLLOG.C next >
C/C++ Source or Header  |  1987-01-14  |  3KB  |  119 lines

  1. /************************************************************************/
  2. /*                calllog.c                */
  3. /*            handles call log of Citadel-86            */
  4. /************************************************************************/
  5.  
  6. #include "ctdl.h"
  7.  
  8. /************************************************************************/
  9. /*                history                 */
  10. /*                                    */
  11. /* 86Mar07 HAW    New users and .ts signals.                */
  12. /* 86Feb09 HAW    System up and down times.                */
  13. /* 86Jan22 HAW    Set extern var so entire system knows baud.        */
  14. /* 85Dec08 HAW    Put blank lines in file.                */
  15. /* 85Nov?? HAW    Created.                        */
  16. /************************************************************************/
  17.  
  18. /************************************************************************/
  19. /*                Contents                */
  20. /*                                    */
  21. /*    logMessage()        Put out str to file.            */
  22. /************************************************************************/
  23.  
  24. extern struct config cfg;
  25. extern int         byteRate;
  26. static FILE         *cl;
  27. FILE             *safeopen();
  28.  
  29. /************************************************************************/
  30. /*    logMessage() Puts message out.    Also, on date change, and    */
  31. /*             first output of system, insert blank line        */
  32. /************************************************************************/
  33. logMessage(val, str, sig)
  34. char *str;
  35. char sig;
  36. char val;
  37. {
  38.     struct timeData {
  39.     int y, d, h, m;
  40.     char *month;
  41.     label person;
  42.     char  newuser;
  43.     char  evil;
  44.     };
  45.  
  46.     static int oldDay = 0;
  47.     static char *curBaud;
  48.     static struct timeData lgin;
  49.  
  50.     int        yr, dy, hr, mn;
  51.     char       *mon;
  52.     label      fn;
  53.     char       *format = "%s %d%s%02d @ %d:%02d\n";
  54.  
  55.     if (val == BAUD) {
  56.     if    (strCmp(str, "300" ) == SAMESTRING) byteRate = 30 ;
  57.     else if (strCmp(str, "1200") == SAMESTRING) byteRate = 120;
  58.     else if (strCmp(str, "2400") == SAMESTRING) byteRate = 240;
  59.     else                        byteRate = 0  ;
  60.     }
  61.  
  62.     if (cfg.call_log >= 100) return;
  63.  
  64.     getDate(&yr, &mon, &dy, &hr, &mn);
  65.     switch (val) {
  66.     case FIRST_IN:
  67.            oldDay = dy;
  68.            sPrintf(fn, "%c:calllog.sys", cfg.call_log + 'a');
  69.            if ((cl = safeopen(fn, "a+")) == NULL)
  70.                crashout("Call log error!");
  71.            fprintf(cl, format, "System brought up",
  72.                 yr, mon, dy, hr, mn);
  73.            break;
  74.     case LAST_OUT:
  75.            fprintf(cl, format, "System brought down",
  76.                 yr, mon, dy, hr, mn);
  77.            fclose(cl);
  78.            return;
  79.     case BAUD: curBaud      = str;
  80.            lgin.person[0] = 0;
  81.            return;
  82.     case L_IN: lgin.y = yr;
  83.            lgin.d = dy;
  84.            lgin.h = hr;
  85.            lgin.m = mn;
  86.            lgin.newuser = sig;
  87.            strCpy(lgin.person, str);
  88.            lgin.month = mon;
  89.            lgin.evil  = FALSE;
  90.            break;
  91.     case EVIL_SIGNAL:
  92.            lgin.evil  = TRUE;
  93.            break;
  94.     case CARRLOSS:
  95.     case L_OUT:
  96.            if (!lgin.person[0]) {
  97.             curBaud = NULL;
  98.             break;
  99.            }
  100.  
  101.            if (oldDay != dy)
  102.                fprintf(cl, "\n");
  103.  
  104.          fprintf(cl, "%-22s: %2d%s%02d %2d:%02d - %2d:%02d (%s) %c %c %c\n",
  105.               lgin.person, lgin.y, lgin.month, lgin.d, lgin.h, lgin.m,
  106.               hr, mn, (curBaud == NULL) ? "sysConsole" : curBaud,
  107.               (lgin.newuser) ? lgin.newuser : ' ', sig,
  108.                         lgin.evil ? 'E' : ' ');
  109.            lgin.person[0] = 0;
  110.  
  111.            oldDay = dy;
  112.            if (val == CARRLOSS) curBaud = NULL;
  113.            break;
  114.  
  115.     default: printf("crashout: unknown case in switch statement");
  116.     }
  117.     fflush(cl);
  118. }
  119.